//获取应用实例
const app = getApp();
var util = require('../../utils/util.js'),
QQMapApi = 'https://apis.map.qq.com/ws/geocoder/v1/',
qqmapsdk = 'HLFBZ-EGZK6-MVQS6-ESMKT-T2G37-GIB2U',
_this;
Page({

  /**
   * 页面的初始数据
   */
  data: {
    userArea: null,      // 地址
    brandModelId: null,  // 机型
    shopCar: null,       // 购物车
    userBrandModel: null,// 机型
    nickName: null,      // 联系人
    phone: null,         // 联系电话
    date: null,          // 时间
    startTime: null,     // 开始时间
    endTime: null,       // 结束时间
    timeSecond:null,
    newMtServer: true,   // 防止订单重复提交
    serviceType: null,
    serviceTitle: null,// 标题
    controls: null,
    buttonClicked: false
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    _this = this
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    _this.mapCtx = wx.createMapContext('map');
    var res = wx.getSystemInfoSync()
    var left = (res.windowWidth / 2) - 35;
    var top = (res.windowHeight / 2) / 2 - 31;
    // 判断是否有电话信息
    // if (!app.globalData.xieYouUserInfo || !app.globalData.xieYouUserInfo.phone){
    //   // 没有去获取电话信息
    //   app.wxGetUserInfo(function(res){
    //     //
    //     var encryptedData = res.encryptedData,
    //       iv = res.iv,
    //       unionId = app.globalData.xieYouUserInfo.unionid;
    //     app.getUserPhone(encryptedData,unionId,iv,function(rs){
          
    //     })
    //   });
    // }else{
      
    // }
    _this.setData({
      serviceTitle: app.globalData.Maintenance.serviceTitle,// 标题
      serviceType: app.globalData.Maintenance.serviceType,//类型
      userArea: {
        adcode: "",
        city: "",
        country: "",
        district: "",
        formattedAddresses: app.globalData.Maintenance.userArea.formattedAddresses,
        latitude: app.globalData.Maintenance.userArea.latitude,
        longitude: app.globalData.Maintenance.userArea.longitude,
        province: ""
      },    // 地址
      // 原地址
      submitArea: app.globalData.Maintenance.userArea,
      // 储存地图地址
      saveMapArea: app.globalData.Maintenance.userArea,
      brandModelId: app.globalData.Maintenance.brandModelId,    // 机型
      shopCar: app.globalData.Maintenance.shopCar,    // 购物车
      userBrandModel: app.globalData.xieYouUserInfoRoot.userBrandModel,//机型
      nickName: app.globalData.xieYouUserInfo.nickname,     //联系人
      phone: app.globalData.xieYouUserInfo.phone,     //联系电话
      // 地图当前位置图标
      controls: [{
        id: 1,
        iconPath: "../../dist/images/map-icon.png",
        position: {
          left: left,
          top: top,
          width: 90,
          height: 75
        },
        clickable: false
      }]
    });
    
    var serviceTitle = _this.data.serviceTitle
    /* 标题 */ 
    wx.setNavigationBarTitle({
      title: serviceTitle
    });
    
    // 调用函数时，传入new Date()参数，返回值是日期和时间  
    //var year = util.formatTime(year);
    var timeSecond = util.formatTime(new Date());
    time = timeSecond.split(" ")[0];
    // 设置end时间   
    year = parseInt(time.split("-")[0])+1;
    month = time.split("-")[1];
    day = time.split("-")[2];
    _this.setData({
      timeSecond: timeSecond,
      date: time,
      startTime: time,
      endTime: year + '-' + month + '-' + day
    })
    app.globalData.Maintenance.serviceDate = time;
    // 校验是否是服务区域
    //_this.getRecommendedProductsList();
  },
  // 修改日期
  bindDateChange: function (e) {
    console.log('picker发送选择改变，携带值为', e.detail.value)
    this.setData({
      date: e.detail.value
    })
    app.globalData.Maintenance.serviceDate = e.detail.value;
  },
  // 修改电话
  servicePhone:function(e){
    console.log(e);
    var value = e.detail.value;
    _this.setData({
      phone: value
    })
  },
  // 修改姓名
  serviceName:function(e){
    console.log(e);
    var value = e.detail.value;
    _this.setData({
      nickName: value
    })
  },
  // 拖动map
  regionchange:function(){
    //_this.clickMap();
    console.log('regionchange 视野发生变化时触发')
    // 获取地图中心的经纬
    _this.getCenterLocation();
    
  },
  // 获取地图中心地址
  getCenterLocation: function () {
    _this.mapCtx.getCenterLocation({
      success: function (res) {
        console.log('获取地图中心地址',res.longitude)
        console.log('获取地图中心地址',res.latitude)
        _this.showAddress(res.latitude, res.longitude);
      }
    })
  },
  // 腾讯地图逆向解析地址
  showAddress: function (latitude, longitude) {
    var qqMapApi = QQMapApi + "?location=" + latitude + ',' +
      longitude + "&key=" + qqmapsdk + "&get_poi=1";
    wx.request({
      url: qqMapApi,
      data: {},
      method: 'GET',
      success: (res) => {
        console.log('腾讯地图逆向解析地址',res);
        if (res.statusCode == 200 && res.data.status == 0){
          // 判断地址是否正确
          _this.judgeAddress(res.data.result);
          // _this.judgeAddress(res.data.result.ad_info);
          console.log('地址逆袭', res);
        }
        // else{
        //   util.alertMsg('提示', '地图获取失败, 请稍后再试', function () {
        //     console.log('用户点击确定')
        //   }, function () {
        //     console.log('用户点击取消')
        //   });
        // }
        
      }
    })
  },
  // 判断地址是否正确
  judgeAddress: function (res) {
    // 储存传来的地址
    var mapArea = {};
    if (res.ad_info) {
      mapArea.latitude = res.ad_info.location.lat;// 经度
      mapArea.longitude = res.ad_info.location.lng; //维度
      mapArea.formattedAddresses = res.address; //详细地址
      mapArea.adcode = res.ad_info.adcode  //code
      mapArea.city = res.ad_info.city         // 
      mapArea.country = res.ad_info.nation
      mapArea.district = res.ad_info.district
      mapArea.province = res.ad_info.province
    } else {
      mapArea.latitude = res.location.lat;// 经度
      mapArea.longitude = res.location.lng; //维度
      mapArea.formattedAddresses = res.address; //详细地址
      mapArea.adcode = res.adcode  //code
      mapArea.city = res.city         // 
      mapArea.country = res.nation
      mapArea.district = res.district
      mapArea.province = res.province
    }
    _this.setData({
      saveMapArea: mapArea
    })

    // 所在地区code
    var adcode = _this.data.submitArea.adcode;
    var submitArea = _this.data.submitArea
    // 之前的地址 —— 省市区
    var area = submitArea.district
    var detailAddress = res.address;
    if (mapArea.adcode) {
      if (adcode != mapArea.adcode) {
        // 超过区域，重新选择地区
        var aa = '超出' + submitArea.district + '请重新选择';
        util.alertMsg('提示', aa, function () {
          console.log('用户点击确定')
          return;
        }, function () {
          console.log('用户点击取消')
          return;
        });
      } else {
        console.log('地址逆袭2==', res)
      }
    }
  },
  // 验证信息
  verifyService:function(){
    wx.showLoading({
      title: '加载中',
    })
    // Map的地址
    var saveMapArea = _this.data.saveMapArea
    // 提交需要验证的code
    var submitArea = _this.data.submitArea
    // 之前的地址 —— 省市区
    var saveMapAreaCode = saveMapArea.adcode
    var submitAreaCode = submitArea.adcode;
    if (saveMapAreaCode != submitAreaCode) {
      // 取消加载中
      wx.hideLoading();
      // 超过区域，重新选择地区
      var aa = '超出' + submitArea.district + '请重新选择';
      util.alertMsg('提示', aa, function () {
        console.log('用户点击确定')
        return;
      }, function () {
        console.log('用户点击取消')
        return;
      });
      return;
    }


    if (_this.data.phone == null || _this.data.phone == '') {
      // 取消加载中
      wx.hideLoading();
      util.alertMsg('警告', '请输入您的联系电话', function () {
        console.log('用户点击确定')
      }, function () {
        console.log('用户点击取消')
      });
      return;
      /*验证手机号*/
    }
    var isPhone = false;
    util.testPhone(_this.data.phone, function (rs) {
      if (rs) {
        isPhone = true;
      } else {
        isPhone = false;
      }
    });
    if (!isPhone) {
      // 取消加载中
      wx.hideLoading();
      util.alertMsg('警告','请输入正确的手机号码',function(){
        console.log('用户点击确定')
      },function(){
        console.log('用户点击取消')
      });
      return;
    }
    if (_this.data.nickName == null || _this.data.nickName == '') {
      // 取消加载中
      wx.hideLoading();
      util.alertMsg('警告', '请填写您的名字', function () {
        console.log('用户点击确定')
      }, function () {
        console.log('用户点击取消')
      });
      return;
    }
    if (_this.data.saveMapArea.formattedAddresses == null) {
      // 取消加载中
      wx.hideLoading();
      util.alertMsg('警告', '请选择您的详细地址', function () {
        console.log('用户点击确定')
      }, function () {
        console.log('用户点击取消')
      });
      return;
    }
    if (_this.data.brandModelId == null) {
      // 取消加载中
      wx.hideLoading();
      util.alertMsg('警告', '请选择你的机型', function () {
        console.log('用户点击确定')
      }, function () {
        console.log('用户点击取消')
      });
      return;
    }
    if (_this.data.serviceType == '' || _this.data.serviceType == null) {
      // 取消加载中
      wx.hideLoading();
      util.alertMsg('警告', '请选择你的维修类型', function () {
        console.log('用户点击确定')
      }, function () {
        console.log('用户点击取消')
      });
      return;
    }
    // app数据更新 时间 姓名 电话 详细地址
    _this.applyServiceWx();
  },
  applyServiceWx:function(){
    var data = {
      latitude: _this.data.saveMapArea.latitude,// 经度
      longitude: _this.data.saveMapArea.longitude, //维度
      country: _this.data.saveMapArea.country,//国家
      province: _this.data.saveMapArea.province,  //省
      city: _this.data.saveMapArea.city,//城市
      area: _this.data.saveMapArea.district, //district 地区
      areaCode: _this.data.saveMapArea.adcode, // 地区areaCode
      detailAddress: _this.data.saveMapArea.formattedAddresses, //详细地址

      userCode: app.globalData.xieYouUserInfo.code,//  userCode
      contact: _this.data.nickName,  //contact联系人
      contactPhone: _this.data.phone, //contactPhone 联系电话
      //repairmanCode: payload.repairmanCode,//维修工编码 支付后在匹配维修师

      serviceType: _this.data.serviceType, //服务类型
      //categoryNameId: categoryNameId,// 故障类型
      //description: payload.description, //description 描述
      serviceDate: _this.data.timeSecond,//serviceDate 服务日期
      brandId: app.globalData.xieYouUserInfoRoot.userBrandModel.brand.id,
      brandModelId: app.globalData.xieYouUserInfoRoot.userBrandModel.brandModel.id,
      shopCar: app.globalData.Maintenance.shopCar
    };
    
    if (_this.data.newMtServer) {
      _this.setData({
        newMtServer: false// 防止重复提交
      });
      app.applyService(data, function (rs) {
        if (rs) {
          if (rs.status == 'success') {
            // 取消加载中
            wx.hideLoading();
            wx.showToast({
              title: '成功',
              icon: 'success',
              duration: 1500,
              mask: true,
              success: function(){
                // // 核算订单
                app.placeRepairOrder(rs.data,function(){
                  // 更新首页订单
                  app.refreshIndex();
                  //跳转 mtOrderTabPage
                  // 返回首页
                  // var pages = getCurrentPages();
                  // wx.navigateBack({
                  //   delta: pages.length - 1
                  // })
                  if (!_this.data.buttonClicked) {
                    util.buttonClicked(_this);
                    wx.navigateTo({
                      url: '/pages/service-detail/service-detail?id=' + rs.data.id + '&type=ing' + '&tab=1'
                    })
                  }
                })
                // // 更新首页订单
                // app.refreshIndex();
                // //跳转 mtOrderTabPage
                // wx.navigateTo({
                //   url: '../service-detail/service-detail?id=' + rs.data.id + '&type=ing' + '&tab=1'
                // })
              }
            })
            // $state.go('mt.userOrderDetail', { id: rs.data.id }, true);
          } else {
            // 取消加载中
            wx.hideLoading();
            util.alertMsg('错误', rs.message, function () {
              console.log('用户点击确定')
            }, function () {
              console.log('用户点击取消')
            });
          }
        } else {
          util.alertMsg('错误', '网络异常, 请稍后再试', function () {
            console.log('用户点击确定')
          }, function () {
            console.log('用户点击取消')
          });
        }
      });
      
    }else{
      // 取消加载中
      wx.hideLoading();
      util.alertMsg('提示', '请勿重复提交订单', function () {
        if (!_this.data.buttonClicked) {
          util.buttonClicked(_this);
          wx.reLaunch({
            url:'/pages/index/index'
          })
        }
      }, function () {
        if (!_this.data.buttonClicked) {
          util.buttonClicked(_this);
          wx.reLaunch({
            url: '/pages/index/index'
          })
        }
      });
    }
  },
  searchArea(){
    if (!_this.data.buttonClicked) {
      util.buttonClicked(_this);
      wx.navigateTo({
        url: '/pages/search-address/search-address',
      })
    }
  }
})

